package array;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

/**
 * @author lj
 * @date 2021/12/27 16:37
 * @email milolj@foxmail.com
 */
public class LeetCode_array2 {
    /**
     * 给定一个数组 prices ，其中 prices[i] 是一支给定股票第 i 天的价格。
     * <p>
     * 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易（多次买卖一支股票）。
     * <p>
     * 注意：你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。
     * <p>
     *  
     * <p>
     * 作者：力扣 (LeetCode)
     * 链接：https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2zsx1/
     * 来源：力扣（LeetCode）
     * 著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
     */
    public static void main(String[] args) {
        int[] array1 = new int[]{7,1,5,3,6,4};
        LeetCode_array2 leetCode_array1 = new LeetCode_array2();
        int duplicates = leetCode_array1.maxProfit(array1);
        System.out.println("利润:" + duplicates);
    }

    public int maxProfit(int[] prices) {
        boolean flag = false;   // 是否持股票）。
        int sum = 0; // 收益
        int priceCurrent = 0; // 当前持股价格

        for (int i = 0; i < prices.length; i++) {

            // 如果手上有股份则不买入
            if (flag) {
                if (prices.length -1 == i) {
                    flag = false;
                    // 计算获取的差值
                    // 将其加入计算为 收益
                    sum =  prices[i] - priceCurrent + sum;


                } else {
                    // 如果当天的价格比第二天的高，则不进行卖出
                    if (prices[i] <= prices[i + 1]) {
                    } else {
                        // 如果当天比第二天低，就卖出 （应当计算几天之内的才对）
                        flag = false;
                        // 计算获取的差值
                        // 将其加入计算为 收益
                        sum = prices[i] - priceCurrent + sum;
                    }
                }
            } else {
                // 如果当天的价格比第二天的高，则不进行买入
                if (i != prices.length -1) {
                    if (prices[i] >= prices[i + 1]) {

                    } else {
                        // 购买当前股票
                        priceCurrent = prices[i];
                        flag = true;
                    }
                }

            }
        }
        return sum;
    }

}
